package algo3.algothief.vista;

import java.io.BufferedReader;
import java.io.IOException;

import algo3.algothief.excepcion.CasoNoIniciadoException;
import algo3.algothief.modelo.Juego;


public class VistaPolicia {

	private Juego juego;
	
	private VistaPais vistaDelPaisActual;
	private VistaRangoPolicia vistaDelRango;
	
//---------------------------------------------------------------------------------------------------------

	public VistaPolicia(Juego juegoActual) {
		this.juego = juegoActual;
		
		this.vistaDelPaisActual = new VistaPais(juego);
		this.vistaDelRango = new VistaRangoPolicia(juego);
	}

//---------------------------------------------------------------------------------------------------------
	
	private void tiempoDeEsperaEntreDialogos(int miliSegundos) {
		try {
		    Thread.sleep(miliSegundos);
		} catch(InterruptedException ex) {
		    Thread.currentThread().interrupt();
		}
	}
	
	private void graficarMensajeIntermedioEntreMensajes(BufferedReader entradaDeTeclado) throws IOException {
		System.out.println("(Presione enter para continuar)");
		entradaDeTeclado.readLine();
	}

//---------------------------------------------------------------------------------------------------------
	
	public void graficarMensajeDeGraduacionDelJugador(BufferedReader entradaDeTeclado) throws IOException {
		vistaDelRango.graficarMensajeDeGraduacionDelJugador();
		
		this.tiempoDeEsperaEntreDialogos(500);
		this.graficarMensajeIntermedioEntreMensajes(entradaDeTeclado);
	}
	
	
	
	public void graficarMensajeAlentadorParaIniciarElCaso(String nombreDelJugador) {
		vistaDelRango.graficarMensajeAlentadorParaIniciarElCaso(nombreDelJugador);
	}
	
	
	
	public void graficarElNombreDeLaCapitalDelPaisDondeEsta() throws CasoNoIniciadoException{
		vistaDelPaisActual.graficarElNombreDeLaCapital();
	}
	
	public void graficarLaDescripcionDelPaisDondeEsta() throws CasoNoIniciadoException {
		vistaDelPaisActual.graficarLaDescripcionDelPais();
	}
	
	public void graficarMensajeDeUbicacionEnElMundo() throws CasoNoIniciadoException {
		vistaDelPaisActual.graficarMensajeDeUbicacionEnElMundo();
	}
	
	
	
	public void graficarMensajeDeCasoGanado(BufferedReader entradaDeTeclado, String nombreDelLadron) throws IOException {
		System.out.println("Gracias a tus esfuerzos, se ha logrado capturar a");
		System.out.println(nombreDelLadron);
		
		this.graficarMensajeIntermedioEntreMensajes(entradaDeTeclado);
		
		vistaDelRango.graficarMensajeDeCantidadDeArrestosActual();
		this.tiempoDeEsperaEntreDialogos(500);
		this.graficarMensajeIntermedioEntreMensajes(entradaDeTeclado);
		
		vistaDelRango.graficarMensajeDeGraduacionDelJugador();
		this.tiempoDeEsperaEntreDialogos(500);
		this.graficarMensajeIntermedioEntreMensajes(entradaDeTeclado);
		
		vistaDelRango.graficarMensajeDeArrestosRestantesParaPromocion();
		this.tiempoDeEsperaEntreDialogos(500);
		this.graficarMensajeIntermedioEntreMensajes(entradaDeTeclado);
	}
	
	public void graficarMensajeDeCasoPerdido(BufferedReader entradaDeTeclado, String nombreDelLadron) throws IOException {
		System.out.println("Desgraciadamente no has logrado capturar a");
		System.out.println(nombreDelLadron);
		
		this.tiempoDeEsperaEntreDialogos(500);
		this.graficarMensajeIntermedioEntreMensajes(entradaDeTeclado);
	}
}
